package com.github.common.extend.demo.config.filetask;

import java.util.concurrent.Future;

/**
 * 文件任务管理器
 * @author wangjj7
 * @date 2023/8/7
 * @description
 */
public interface FileTaskManager {

    /**
     * 提交文件任务，完成后返回
     * @param fileTaskParam 任务定义
     * @return
     */
    FileTask submit(FileTaskParam fileTaskParam);

    /**
     * 提交文件任务，异步执行
     * @param fileTaskParam 任务定义
     * @param fileTaskCallback 文件生成后回调函数，允许为空
     */
    Future<FileTask> asyncSubmit(FileTaskParam fileTaskParam, FileTaskCallback fileTaskCallback);

    /**
     * 重载
     * @see #asyncSubmit(FileTaskParam ,FileTaskCallback)
     * @param fileTaskParam
     */
    default Future<FileTask> asyncSubmit(FileTaskParam fileTaskParam)
    {
        return asyncSubmit(fileTaskParam,null);
    }

    /**
     * 查询任务详情
     * @param id
     * @return
     */
    FileTask get(String id);

}
